package com.zyf.chapter02.behavior.visitor.v3;

/**
 * 缺点：还需要在每个资源文件类汇总定义新的 accept 重载函数
 */
public abstract class ResourceFile {
    protected String filePath;

    public ResourceFile(String filePath) {
        this.filePath = filePath;
    }

    /**
     * 重构点：由于多态的缺点，这里增加一个方法，让具体的 File 类去自己调用
     * extractor,这也是访问者模式的核心
     * 抽出成为 txt 文件
     */
    abstract void accept(Extractor extractor);

    /**
     * 利用多态特性，增加压缩算法
     * @param compressor
     */
    abstract public void accept(Compressor compressor);
}
